package sword.chapter11BinarySearch;

/**
 * 山峰数组的顶部
 *
 * 山峰数组特点
 * 1. 峰顶左右两边的值都比峰顶小（左边单调递增，右边单调递减）
 * 2. 数组第一个和最后一个元素都不会是峰顶元素
 *
 * 二分查找
 * 满足条件1，返回结果
 * 如果当前值比前一个大，此时仍处于单调递增区间，结果值一定在右边，修改左下标。
 * 否则修改右下标
 *
 * @author K
 * @date 2021/12/22 09:00
 */
public class S69PeakIndexInMountainArray {

    public static int s69(int[] nums) {
        int left = 1;
        int right = nums.length - 2;
        while (left <= right) {
            int mid = (left + right) / 2;
            if (nums[mid - 1] < nums[mid] && nums[mid + 1] < nums[mid]) {
                return mid;
            }
            if (nums[mid] > nums[mid - 1]) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }

        }
        return -1;
    }

    public static void main(String[] args) {
        int[] nums = {1, 5, 4, 3, 2};
        int result = s69(nums);
        System.out.println();
    }
}
